package cn.exrick.manager.service;

import cn.exrick.common.pojo.ZTreeNode;
import cn.exrick.manager.pojo.TbOrganization;

import java.math.BigDecimal;
import java.util.List;

/**
 * 部门管理
 */
public interface OrganizationService {
    /**
     * 通过id获取
     * @param id
     * @return
     */
    TbOrganization getOrganizationById(Long id);

    /**
     * 获得部门树
     * @param parentId
     * @return
     */
    List<ZTreeNode> getOrganizationList(int parentId);

    /**
     * 添加部门
     * @param tbOrganization
     * @return
     */
    int addOrganization(TbOrganization tbOrganization);

    /**
     * 编辑部门
     * @param tbOrganization
     * @return
     */
    int updateOrganization(TbOrganization tbOrganization);

    /**
     * 删除部门
     * @param id
     */
    void deleteOrganization(Long id);

    /**
     * 递归删除
     * @param id
     */
    void deleteZTree(Long id);

    /**
     * 更新部门余额
     * @param id
     * @param balance
     */
    void updateOrganizationBalance(Long id, BigDecimal balance);

    /**
     * 根据父部门id获取子部门id集合（包括本身）
     * @param parentId
     * @return
     */
    List<String> getChildOrganizationIds(Long parentId);

    /**
     * 获取部门余额低于初始值20%的部门
     * @return
     */
    List<TbOrganization> getBalanceNotEnoughOrgList();
}
